package com.yuncheng.spcyApi.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuncheng.spcyApi.constant.jcy.JcyLxjhConstant;
import com.yuncheng.spcyApi.constant.jcy.JcydjbConstant;
import com.yuncheng.spcyApi.entity.SpcyPxCjry;
import com.yuncheng.entity.YcSysUser;
import com.yuncheng.spcyApi.mapper.SpcyPxCjryMapper;
import com.yuncheng.spcyApi.service.ISpcyPxCjryService;
import com.yuncheng.spcyApi.utils.GetCurrentUserUtils;
import com.yuncheng.spcyApi.utils.GetUuIdUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

import com.yuncheng.common.base.service.impl.BaseServiceImpl;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @Description: 审评查验-培训参加人员
 * @Author: yuncheng
 * @Date: 2023-04-14
 * @Version: V1.0
 */
@Service
public class SpcyPxCjryServiceImpl extends BaseServiceImpl<SpcyPxCjryMapper, SpcyPxCjry> implements ISpcyPxCjryService {

    @Resource
    @Lazy
    private SpcyPxCjryMapper spcyPxCjryMapper;

    @Override
    public void initLxCjry(String userid, YcSysUser user, String flxjhid) {

        SpcyPxCjry oldCjry = selectLxCjryByLxjhId(flxjhid, userid);
        if (oldCjry == null) {
            oldCjry = new SpcyPxCjry();
            if (user != null) {
                BeanUtil.copyProperties(user, oldCjry);
            }
            oldCjry.setId(GetUuIdUtils.ReplaceUuId());
            oldCjry.setFuserid(userid);
            oldCjry.setFpxjbxxid(flxjhid);
            oldCjry.setFsjcjzt(JcydjbConstant.SJCJZT_TXZ);
            oldCjry.setFsjshzt(JcyLxjhConstant.JCYLX_CJRY_SJSHZT_WSH);
            oldCjry.setFkscs(JcyLxjhConstant.JCYLX_CJRY_KSCS);
            oldCjry.setCreateTime(new Date());
            oldCjry.setUpdateTime(new Date());
            oldCjry.setCreateBy(GetCurrentUserUtils.getCurrentUserAccount());
            oldCjry.setUpdateBy(GetCurrentUserUtils.getCurrentUserAccount());
            spcyPxCjryMapper.insert(oldCjry);
        }
    }

    @Override
    public boolean verifyIsExistUserByLxjhId(String flxjhid, String userid) {
        List<SpcyPxCjry> list = spcyPxCjryMapper.selectList(new LambdaQueryWrapper<SpcyPxCjry>()
                .eq(SpcyPxCjry::getFuserid, userid)
                .eq(SpcyPxCjry::getFpxjbxxid, flxjhid));
        if (CollectionUtil.isNotEmpty(list)){
            return true;
        }

        return false;
    }

    @Override
    public SpcyPxCjry selectLxCjryByLxjhId(String flxjhid, String userid) {
        List<SpcyPxCjry> list = spcyPxCjryMapper.selectList(new LambdaQueryWrapper<SpcyPxCjry>()
                .eq(SpcyPxCjry::getFuserid, userid)
                .eq(SpcyPxCjry::getFpxjbxxid, flxjhid));
        if (CollectionUtil.isNotEmpty(list)){
            return list.get(0);
        }

        return null;
    }

    @Override
    public List<SpcyPxCjry> selectLxCjryList(String flxjhid) {
        return spcyPxCjryMapper.selectList(new LambdaQueryWrapper<SpcyPxCjry>()
                .eq(SpcyPxCjry::getFpxjbxxid, flxjhid)
                .orderByAsc(SpcyPxCjry::getCreateTime));

    }

    @Override
    public List<SpcyPxCjry> selectLxtgCjryList(String flxjhid) {
        return spcyPxCjryMapper.selectList(new LambdaQueryWrapper<SpcyPxCjry>()
                .eq(SpcyPxCjry::getFpxjbxxid, flxjhid)
                .eq(SpcyPxCjry::getFsjshzt, JcyLxjhConstant.JCYLX_CJRY_SJSHZT_SHTG)
                .eq(SpcyPxCjry::getFkhjg, JcyLxjhConstant.JCYLX_CJRY_KHJG_HG)
                .orderByAsc(SpcyPxCjry::getCreateTime));
    }

    @Override
    public List<SpcyPxCjry> selectShztCjryList(String flxjhid, String fsjshzt) {
        return spcyPxCjryMapper.selectList(new LambdaQueryWrapper<SpcyPxCjry>()
                .eq(SpcyPxCjry::getFpxjbxxid, flxjhid)
                .eq(SpcyPxCjry::getFsjshzt, fsjshzt));
    }
}
